#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>

typedef int LLDataType;

struct LinkedListNode
{
	LLDataType data;
	struct LinkedListNode* next;
};

typedef struct LinkedListNode LinkedListNode;

LinkedListNode* LinkedListCreateNewNode(LLDataType x);
void LinkedListPushBack(LinkedListNode** pphead, LLDataType x);
void LinkedListPrint(LinkedListNode* phead);
void LinkedListPopBack(LinkedListNode** pphead);
void LinkedListPushFront(LinkedListNode** pphead, LLDataType);
void LinkedListPopFront(LinkedListNode** pphead);
LinkedListNode* LinkedListFind(LinkedListNode* phead, LLDataType x);
void LinkedListInsert(LinkedListNode** pphead, LinkedListNode* pos, LLDataType x);
void LinkedListErase(LinkedListNode** pphead, LinkedListNode* pos);
void LinkedListDestroy(LinkedListNode** pphead);